package com.cyh.testdesignpattern.factory;

/**
 * 1.有一个披萨接口，根据原料不同区分，其他生产打包方法一样。
 * 2.一个green披萨，一个cheese披萨， 都继承了披萨接口
 * 3. 有很多商店order, 他们都要用if else 来区分披萨的类型。
 * 4.购买者通过不同的商店可以购买披萨。
 * ----存在的问题是耦合性太多，增加一种披萨类型会导致所有类都要改，所以要用工厂模式。
 *
 *
 * 简单工厂模式（静态工厂模式）：把创建pizza对象封装到一个类中，这样我们有新的pizza种类时，只需要修改该类就可，其它有创建pizza对象的代码就不需要修改。
 *             最简单，最实用的工厂模式。
 *
 * 工厂方法模式：如果披萨除了口味还有地区的话，简单工厂模式就不适用了，比如北京的cheese披萨
 *      定义了一个创建对象的抽象方法，由子类决定要实例化的类，工厂方法模式将对象的实例化推迟到子类。
 *
 * 抽象工厂模式：定义了一个interface用于创建相关或有依赖关系的对象簇，而无需指明具体的类。
 *
 *
 * */
public class test01 {
}
